/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2006
* Sleepycat Software. All rights reserved.
*
* $Id: LockConflict.java,v 1.1 2006/05/06 08:59:06 ckaestne Exp $
*/
package com.sleepycat.je.txn;
/**
* LockConflict is a type safe enumeration of lock conflict types. Methods on
* LockConflict objects are used to determine whether a conflict exists and, if
* so, how it should be handled.
*/
class LockConflict {
static final LockConflict ALLOW = new LockConflict(true, false);
static final LockConflict BLOCK = new LockConflict(false, false);
static final LockConflict RESTART = new LockConflict(false, true);
private boolean allowed;
private boolean restart;
/**
* No conflict types can be defined outside this class.
*/
private LockConflict(boolean allowed, boolean restart) {
this.allowed = allowed;
this.restart= restart;
}
/**
* This method is called first to determine whether the locks is allowed.
* If true, there is no conflict. If false, there is a conflict and the
* requester must wait for or be denied the lock, or (if getRestart returns
* true) an exception should be thrown to cause the requester's operation
* to be restarted.
*/
boolean getAllowed() {
return allowed;
}
/**
* This method is called when getAllowed returns false to determine whether
* an exception should be thrown to cause the requester's operation to be
* restarted. If getAllowed returns false and this method returns false,
* the requester should wait for or be denied the lock, depending on the
* request mode. If getAllowed returns true, this method will always
* return false.
*/
boolean getRestart() {
return restart;
}
}